package com.fancy.recommendation.service;

import com.fancy.recommendation.dto.request.RankingRequestDTO;
import com.fancy.recommendation.dto.response.RankingResponseVO;
import com.fancy.recommendation.entity.HotRanking;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

/**
 * 榜单服务接口
 *
 * @author fancy
 */
public interface RankingService {

    /**
     * 获取热门榜单
     */
    RankingResponseVO getRanking(RankingRequestDTO request);

    /**
     * 获取榜单类型列表
     */
    List<Map<String, Object>> getRankingTypes();

    /**
     * 获取榜单历史
     */
    List<RankingResponseVO> getRankingHistory(String rankingType, String periodType, Integer limit);

    /**
     * 生成热门歌曲榜单
     */
    void generateHotSongsRanking(String periodType, LocalDate periodDate);

    /**
     * 生成热门专辑榜单
     */
    void generateHotAlbumsRanking(String periodType, LocalDate periodDate);

    /**
     * 生成新歌榜单
     */
    void generateNewSongsRanking(String periodType, LocalDate periodDate);

    /**
     * 批量更新榜单数据
     */
    void batchUpdateRanking(List<HotRanking> rankings);

    /**
     * 清理历史榜单数据
     */
    void cleanHistoryRanking(Integer keepDays);

    /**
     * 获取实时热门内容
     */
    List<Map<String, Object>> getRealtimeHotContent(String contentType, Integer limit);

    /**
     * 统计榜单数据
     */
    Map<String, Object> getRankingStatistics(String rankingType, String periodType);
}
